#!/bin/bash

#----------------------------------
# 创建时间：2022-10-18 22:19
# 功能：
#    生成 pkg 包 编译和运行 脚本
# 使用说明：
#    一个参数：生成脚本，执行时会截取文件名，第一个"_"后 helloworl ，做为"包"里的可执行程序名。
#	 如：
#	  1.执行：sh out-colcon_build-pkg-script.sh pkg01_helloworld_cpp
#	  	会生成  colcon_build-pkg01_helloworld_cpp.sh 文件
#	  2.执行：sh colcon_build-pkg01_helloworld_cpp.sh 文件
#		会执行如下两条命令：
#		colcon build --packages-select pkg01_helloworld_cpp
#		ros2 run pkg01_helloworld_cpp helloworld
#
#    两个参数：生成脚本，执行时会取自定义名称 test ，做为"包"里的可执行程序名。
#	 如：
#	  1.执行：sh out-colcon_build-pkg-script.sh pkg01_helloworld_cpp test
#	  	会生成  colcon_build-pkg01_helloworld_cpp.sh 文件
#	  2.执行：sh colcon_build-pkg01_helloworld_cpp.sh 文件
#		会执行如下两条命令：
#		colcon build --packages-select pkg01_helloworld_cpp
#		ros2 run pkg01_helloworld_cpp test
#
# 更新：
#	2022-10-18 22:19  生成 编译 & 运行 ros2包和程序 脚本
#	2022-10-24 15:14  增加 "生成时自定义可执行程序名"
#	2022-10-26 22:09  增加 参数3，参数4，程序执行时可以自定义要输入参数
#
#----------------------------------

## 至少需要一个参数
if [ $# -eq 0 ];then
	echo ""
	echo "[ Error ] Script need 1 parameter ! "
	echo "[ Info ] sh $0 pkg01_helloworld_cpp <helloworld> <num1> <num2>"
	echo ""
	exit
fi

## 参数名
### 参数1，包名
parameter_1=$1
### 参数2，自定义包里可执行程序名
parameter_2=$2
### 参数3、4, 自定义可执行程序参数
parameter_3=$3
parameter_4=$4


### 生成的脚本名
if [ -z $2 ];then
	create_script_name=colcon_build-$1.sh
else
	create_script_name=colcon_build-$1-$2.sh
fi

echo ""
echo "[ OK ] Begin out script \"${parameter_1}\""
echo ""

## 生成 sh 脚本内容 -- 开始
cat <<-EOF > ${create_script_name}
#!/bin/bash

## 获取当前脚本名
script_name=\$0
run_name=${parameter_2}

## 去除-前的字符和.后的字符
## colcon_build-${parameter_1}.sh -> ${parameter_1}
script_name_start=\$(echo "\${script_name}" | awk -F"-" '{print \$2}'|awk -F"." '{print \$1}')

## 截取名字中，可执行文件的名字
if [ -z \${run_name} ]; then
    ### ${parameter_1} -> $(echo "${parameter_1}" | awk -F"_" '{print $2}'|awk -F"_" '{print $1}')
    exec_name=\$(echo "\${script_name_start}" | awk -F"_" '{print \$2}'|awk -F"_" '{print \$1}')
else
    exec_name=\${run_name}
fi

#echo "cript_name_start=\${cript_name_start}"
#echo "exec_name=\${exec_name}"
#exit

echo ""
echo "[ Command ] colcon build --packages-select \${script_name_start}"
echo ""
colcon build --packages-select \${script_name_start}
echo ""
#
#echo "[ Command ] . install/setup.bash"
#. install/setup.bash
#
#echo "[ Command ] source install/setup.bash"
#source install/setup.bash
#
echo "[ Command ] bash install/setup.bash"
bash install/setup.bash

echo ""
echo "[ Info ] sleep 0.5"
sleep 0.5
echo ""
echo "------------------"
echo ""
echo "[ Command ] ros2 run \${script_name_start} \${exec_name} ${parameter_3} ${parameter_4}"
echo ""
ros2 run \${script_name_start} \${exec_name} ${parameter_3} ${parameter_4}
echo ""
EOF
## 生成 sh 脚本内容 -- 结束

echo "[ OK ] Out script done."
echo ""
echo ""
echo "[ Info ] sh ${create_script_name}"
echo ""


